package com.xinqi.modules.sys.gpt.service;

import com.xinqi.common.base.response.R;
import com.xinqi.modules.sys.gpt.dto.req.ChatMessageHistoryDTO;
import com.xinqi.modules.sys.gpt.dto.req.ChatMessageRemoveDTO;
import com.xinqi.modules.sys.gpt.dto.req.ChatMessageSendDTO;
import com.xinqi.modules.sys.gpt.dto.req.ChatMessageStopDTO;
import com.xinqi.modules.sys.gpt.dto.rsp.ChatMessageHistoryResultDTO;
import com.xinqi.modules.sys.gpt.dto.rsp.ChatMessageResultDTO;

/**
 * 新奇AI消息
 *
 * @Author：yyzhen
 * @Package：com.xinqi.modules.sys.gpt.service
 * @Project：XingqiClass-Cloud-Plus
 * @name：ChatMessageService
 * @Date：2023/5/29 11:11
 * @Filename：ChatMessageService
 */
public interface ChatMessageService {

    /**
     * 新奇AI消息 -- 发送
     *
     * @param dto
     * @return
     */
    R<ChatMessageResultDTO> sendMessage(ChatMessageSendDTO dto);

    /**
     * 新奇AI消息 -- 历史消息
     *
     * @param dto
     * @return
     */
    ChatMessageHistoryResultDTO historyMessage(ChatMessageHistoryDTO dto);

    /**
     * 新奇AI消息 -- 删除
     *
     * @param dto
     */
    void removeMessage(ChatMessageRemoveDTO dto);

    /**
     * 新奇AI消息 -- 结束
     *
     * @param dto
     */
    void stopMessage(ChatMessageStopDTO dto);

    /**
     * 请求失败-- 回调 -- 恢复一次配额
     *
     * @param userId
     */
    void recoveryByUser(Long userId);

    /**
     * 请求失败-- 回调 -- 回复包含敏感内容
     *
     * @param mesageId
     */
    void attributeMessage(String mesageId);

}
